
// function createArr(length: number, value: any): any[] {
//     const res: any[] = []
//     for (let i = 0; i < length; i++) {
//         res.push(value)
//     }
//     return res
// }
// const arr: any[] = createArr(10, 'A')


// 泛型
// T 可以理解为一个可以被改变的数据类型，具体类型取决于调用的时候传递的类型
function createArr<T>(length: number, value: T): T[] {

    const res: T[] = []

    for (let i = 0; i < length; i++) {
        res.push(value)
    }

    return res
}
const arr: string[] = createArr<string>(10, 'A')

const arr2: number[] = createArr<number>(5, 6)

interface iUser {
    name: string
    age: number
}

const arr3: iUser[] = createArr<iUser>(5, { name: '张三', age: 18 })
const arr4: Array<iUser> = createArr<iUser>(5, { name: '张三', age: 18 })


// 元组: 明确已知数组元素的个数已经每个元素的数据类型的时候我们可以使用元组
// 元组中定义了 3 个数据类型,也就意味着不能有第四个数据
let arr5: [number, string, number] = [1, '你好', 1]



